package com.my.lucky.service;

import com.my.lucky.model.Stock;
import com.my.lucky.model.dto.StockSummaryDTO;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

public interface StockService {

//    /**
//     * 保存股票数据
//     *
//     * @param stock 股票数据
//     * @return 保存后的股票数据
//     */
//    Stock saveStock(Stock stock);
//
//    /**
//     * 批量保存股票数据
//     *
//     * @param stocks 股票数据列表
//     * @return 保存后的股票数据列表
//     */
//    List<Stock> saveStocks(List<Stock> stocks);
//
//    /**
//     * 根据ID查询股票数据
//     *
//     * @param id 股票数据ID
//     * @return 股票数据
//     */
//    Stock findById(Long id);
//
//    /**
//     * 根据股票代码查询股票数据
//     *
//     * @param code 股票代码
//     * @return 股票数据列表
//     */
//    List<Stock> findByCode(String code);
//
//    /**
//     * 查询指定日期范围内的股票数据
//     *
//     * @param startDate 开始日期
//     * @param endDate   结束日期
//     * @return 股票数据列表
//     */
//    List<Stock> findByDateRange(LocalDate startDate, LocalDate endDate);
//

    /**
     * 查询指定股票代码在指定日期范围内的数据
     *
     * @param code      股票代码
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 股票数据列表
     */
    List<StockSummaryDTO> findByCodeAndDateRange(String code, LocalDate startDate, LocalDate endDate);
//
//    /**
//     * 查询最新的股票数据
//     *
//     * @return 最新的股票数据列表
//     */
//    List<Stock> findLatestStocks();
//
//    /**
//     * 查询指定股票代码的最新数据
//     *
//     * @param code 股票代码
//     * @return 最新的股票数据
//     */
//    Stock findLatestStockByCode(String code);
//
//    /**
//     * 检查指定股票在指定日期是否存在数据
//     *
//     * @param code      股票代码
//     * @param tradeDate 交易日期
//     * @return 是否存在数据
//     */
//    boolean existsByCodeAndTradeDate(String code, LocalDate tradeDate);
//
//    /**
//     * 删除股票数据
//     * @param id 股票数据ID
//     */
//    void deleteById(Long id);


    List<StockSummaryDTO> getStockSummaryData(LocalDate startDate);

    String checkAndDateRange(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

    String checkAndDateRangeWash(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

    String checkAndDateRangeBoll(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

    String checkAndDateRangeBoll20cm(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

    String checkAndDateRangeBoll10cm(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

    String checkAndDateRangeBollFlow(LocalDate startDate, LocalDate endDate);

    String checkAndDateRangeBollSearch(LocalDate startDate, LocalDate endDate);

    String checkAndDateRangeBollLimit(LocalDate startDate, LocalDate endDate);

    String checkAndDateRangeBollLimitOpen();

    String checkAndDateRangeBoll3D();

    String checkAndDateRangeRank(LocalDate startDate, LocalDate endDate, Map<String, Stock> kdjStocks);

} 